/**
 * Copyright (C) 2005 WUZEWEN. All rights reserved.
 * WZW PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.kingcore.director.core.mail;


import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
import java.util.StringTokenizer;

import wzw.mail.MailSendBean;

/**
 * <p>在java版经常看到有人问如何用javamail发送邮件？如何接收邮件？如何访问多个文件夹等。问题零散，而历史的回复早已经淹没在问题的海洋之中。
 * 本人之前所做过一个java项目，其中包含有WebMail功能，当初为用java实现而对javamail摸索了一段时间，总算有点收获。看到论坛中的经常有此方面的问题，因此把我的一些经验帖出来，希望对大家有些帮助。
 * 此篇仅介绍用javamail实现发送邮件功能，其中涉及smtp认证，邮件附件发送，及HTML内容邮件等。
 * 其它有关多邮箱的实现，接收POP3邮件及IMAP等内容，将在后续文章中介绍。
 * 如下程序需要：javamail，JAF包，j2ee.jar包含了上述两个包，建议大家安装J2SDKEE或直接拷贝j2ee.jar，将其添加到jbuilder的library中，或系统ClassPath中</p>
 * @author	WUZEWEN on 2005-05-25
 * @version	1.0
 * @see		Object#equals(java.lang.Object)
 * @see		Object#hashCode()
 * @see		HashMap
 * @since	JDK5
 */

public class MailSend {
	
	private static String filePath="";
	
	/**
	 * @return Returns the filePath.
	 */
	public static String getFilePath() {
		return filePath;
	}

	/**
	 * @param filePath The filePath to set.
	 */
	public static void setFilePath(String filePath) {
		MailSend.filePath = filePath;
	}

	public MailSend() {
	}
	
	/**
	 * 
     */
	public MailSend(String smtp){
	}
	
	
	/**
	 * <p>发送邮件的Main函数。</p>
	 * @author WUZEWEN on 2005-05-25
	 * @param args 调用参数
	 * @return void
	 * @throws no exception
	 */
	public static void main(String[] args) throws Exception{
	
		String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
		"<div align=center><a href=http://www.csdn.net> csdn </a></div>";
		
		//获取配置信息
		Properties props=new Properties();
		try{
			props.load(new java.io.FileInputStream(MailSend.getFilePath()+"/mailsend.properties")) ;
		}catch(FileNotFoundException ex){
			//JOptionPane.showMessageDialog(this,"没有找到属性文件:"+MailSend.getFilePath()+"/mailsend.properties");
			//System.out.println ("没有找到属性文件！");
			//return;
			//System.exit(0);
			throw new Exception( "没有找到属性文件:" + MailSend.getFilePath()+"/mailsend.properties" );
		}catch(IOException ex){
			//System.out.println ("没有找到属性文件！");
			return;
		}
		//邮件信息配置
		String prefix=props.getProperty("jmail.rootCategory");	//主类别
		if(prefix==null||prefix.trim().equals("")){
			prefix="A1";
		}
		prefix="jmail.conf."+prefix+".";
		//System.out.println ("category:"+prefix);
		String subject = props.getProperty(prefix+"subject");	//主题
		String body    = props.getProperty(prefix+"body");		//文本内容
		String from    = props.getProperty(prefix+"from");		//发送邮箱
		String user    = props.getProperty(prefix+"user");		//发送邮箱用户
		String pass    = props.getProperty(prefix+"pass");		//发送邮箱口令
		String to      = props.getProperty(prefix+"to");		//接收邮箱集合，用,号分隔
		String copyTo  = props.getProperty(prefix+"copyTo");	//抄送邮箱集合，用,号分隔
		String fileAffix=props.getProperty(prefix+"fileAffix");//附件，多个使用,号分隔
		if(subject==null) subject="";
		if(body==null) body="";
		if(from==null) from="";
		if(user==null||user.trim().equals("")){
			user=from.substring(0,from.indexOf("@"));
		}
		if(pass==null||pass.trim().equals("")){
			pass="tom8798155";
		}
		//System.out.println ("pass="+pass);
		
		if(to==null) to="";
		if(copyTo==null) copyTo="";
		if(fileAffix==null) fileAffix="";
		java.util.StringTokenizer st = new StringTokenizer(fileAffix,",");
		
		//网络配置信息
		String smtp     = props.getProperty(prefix+"smtp");		//邮件服务器的smtp
		String proxyType= props.getProperty("jmail.conf.proxyType");		//局域网的proxyType
		String proxyIP  = props.getProperty("jmail.conf.proxyIP");		//局域网的proxyIP
		String proxyPort= props.getProperty("jmail.conf.proxyPort");		//局域网的proxyPort
	    
		//设置代理服务器 
		MailSendBean themail = new MailSendBean(smtp);
		if(proxyType!=null&&!proxyType.trim().equals("")){
			themail.setProxyServer(proxyType,proxyIP,proxyPort) ;			
		}
		//themail.props = System.getProperties() ;
		//themail.setProxyServer("192.168.0.10","1080") ;
		//themail.setProxyServer("192.168.0.10","8000") ;
		themail.setNeedAuth(true);
		//themail.
		
		
		if(themail.setSubject( subject ) == false) return;
		if(themail.setBody( body ) == false) return;
		if(themail.setFrom( from ) == false) return;
		if(themail.setTo( to ) == false) return;
		if(!copyTo.equals("")){
			if(themail.setCopyTo(copyTo) == false) return;
		}
		while(st.hasMoreElements()){
			String tmep = st.nextElement().toString() ;
			//System.out.println (tmep);
			if(themail.addFileAffix(tmep) == false) return;
		}
		//if(themail.addFileAffix("c:/myattachment.txt") == false) return;
		themail.setUserPass(user,pass);			
		if(themail.sendout() == false) return; 

	}

	
}
